package com.backup.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

public class PropertiesUtil {
		
	private Properties properties = new Properties();
	private File properFile = null;
	/**
	 * 初始化，参数是class路径里面的properties文件,只能读不能写
	 * @param propertiesNameInClassDirectory
	 */
	public PropertiesUtil(String propertiesNameInClassDirectory) {
		InputStream is;
        try {
            is = Thread.currentThread().getContextClassLoader().getResourceAsStream(propertiesNameInClassDirectory);
            properties.load(is);
            is.close();
        }
        catch (Exception e) {
        	e.printStackTrace();
        }
    }
	/**
	 * 初始化，参数是一个可以读写的文件对象
	 * @param propertiesFile
	 */
	public PropertiesUtil(File propertiesFile) {
		InputStream is;
        try {
        	if(propertiesFile!=null){
        		if(!propertiesFile.exists()){
        			propertiesFile.createNewFile();
        		}
        	}
            is =  new FileInputStream(propertiesFile);
            properties.load(is);
            is.close();
            properFile = propertiesFile;//file的clone对象
        }
        catch (Exception e) {
        	e.printStackTrace();	
        }
    }

    

    /**
     * 根据文件parameter.properties文件中的key获取对应的值；如果不存在，返回""
     * @param strKey 文件中的key
     * @return key获取对应的值；如果不存在，返回""
     */ 
    public String getValue(String strKey) {
        return getValue(strKey,"");
    }
    public  String getProperties(String strKey){
    	return getValue( strKey,  "");
    }
    public  String getProperties(String strKey, String defaultValue){
    	return getValue( strKey,  defaultValue);
    }
    /**
     * 根据文件parameter.properties文件中的key获取对应的值；如果不存在，返回""
     * @param strKey 文件中的key
     * @param defaultValue 如果不存在该key，默认返回的值
     * @return key获取对应的值；
     */
    public  String getValue(String strKey, String defaultValue) {
        try {
            return properties.getProperty(strKey).trim();
        } catch (Exception e) {
        	
        }
        return defaultValue;
    }
    public void setValue(String key, String value) throws Exception{
    	if(properFile==null){
    		throw new IOException("找不到cache文件，无法保存参数");
    	}
    	properties.setProperty(key, value);
    	try {
				OutputStream os = new FileOutputStream(properFile);
				properties.store(os, "");
			} catch (Exception e) {
				throw e;
			}
    }
    public static void main(String[] a){
    	PropertiesUtil pUtil = new PropertiesUtil("jdbc.properties");
    	System.out.println(pUtil.getValue("jdbc.class"));
    }
}